---
title: HTTP 报文结构
description: 讲解 HTTP 请求报文和响应报文的组成及各部分含义
---

# HTTP 报文结构

HTTP 通信由请求报文和响应报文组成，每个报文包含起始行、头部字段和消息主体。

## 请求报文结构
```
<方法> <请求路径> <协议版本>
<请求头部字段>

<消息主体>
```
**示例：**
```
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

（无消息主体）
```

- **起始行**：包含请求方法、路径和协议版本。
- **头部字段**：描述请求的元信息，如 Host、User-Agent、Accept 等。
- **消息主体**：用于 POST/PUT 等方法传递数据。

## 响应报文结构
```
<协议版本> <状态码> <原因短语>
<响应头部字段>

<消息主体>
```
**示例：**
```
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 305
Connection: keep-alive

<html>...</html>
```

- **起始行**：包含协议版本、状态码和原因短语。
- **头部字段**：描述响应的元信息，如 Content-Type、Content-Length、Connection 等。
- **消息主体**：返回的实际内容，如 HTML、JSON、图片等。

## 报文分隔
- 报文头部与消息主体之间用一个空行分隔。
- 头部字段格式为 `字段名: 字段值`，每行一个字段。

## 参考资料
- [MDN Web Docs: HTTP Messages](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Messages)
- [RFC 7230: HTTP/1.1 Message Syntax and Routing](https://datatracker.ietf.org/doc/html/rfc7230)